package com.cc.controller;

import com.cc.model.EbProduct;
import com.cc.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 用一句话描述
 * @Auther: 新梦想*陈超
 * @Date: 2020-10-30 13:09
 *
 * web-service-mapper--数据
 */
@Controller
@RequestMapping("/product")
public class ProductController {

    @Autowired
    private ProductService productService;

    //http://localhost:8080/easybuy/product/detail?epId=591
    //detail方法的参数名与浏览器传递过来的参数名一致
    @RequestMapping("/detail")
    public String detail(Model model, int epId){
        System.out.println("====detail==="+epId);
        //1.调用service层根据id查询商品的详细信息的方法
        EbProduct productDetail = productService.findById(epId);
        //2.数据绑定到model中
        model.addAttribute("detail",productDetail);
        //3.返回视图名称
        return "product-view";//product-view.jsp
    }

    /**
     * 根据商品分类查询所有商品信息
     * @param epc_child_id
     * @return
     */
    @RequestMapping("/product_list")
    public String productList(Model model,int epc_child_id){//与超链接参数名一致
        System.out.println("productList====epcId="+epc_child_id);
        //1.调用service层的根据分类查询所有商品的方法
        List<EbProduct> productList = productService.findByCategoryId(epc_child_id);
        //2.绑定数据到model
        model.addAttribute("productList",productList);
        //3.返回视图
        return "product-list";///product-list.jsp
    }

    /**
     * ajax发送请求（推荐）
     * @param epId
     */
    @RequestMapping("/add_car")
    public String addCar(HttpSession session, int epId){
        System.out.println("addCar===epId=="+epId);
        //1.调用service根据id查询商品的方法
        EbProduct target_product = productService.findById(epId);
        //2.获取购物车  session
        //3 获取集合 商品---集合--购物车
        List<EbProduct> car = (List<EbProduct>) session.getAttribute("car");
        if(car==null){
            car= new ArrayList<>(10);
        }
        //4.将商品放入集合
        //4.1 判断集合中是否已经存在该商品
        boolean flag = false;//假设购物车不存在该商品
        for (EbProduct originProduct:car){
            //下面条件成立 表名购物车中存在该商品，只需要修改商品的数量就可以 ，
            //不需要再将该商品添加到购物车
            if(target_product.getEpId().equals(originProduct.getEpId())){
                flag= true;
                originProduct.setCount(originProduct.getCount()+1);
                break;
            }
        }
        if(!flag){
            car.add(target_product);
        }
        //5.将集合放入购物车 key-value
        session.setAttribute("car",car);
        return "redirect:detail?epId="+epId;
    }

    @RequestMapping("/show_car")
    public String showCar(){
        return "shopping";//shopping.jsp
    }
    @RequestMapping("/shoping_result")
    public String showResult(){
        return "shopping-result";
    }

    @RequestMapping("/search")
    //点击查询输入框的标签name值与controller的方法的参数名一致
    public String search(Model model,String searchText){
        System.out.println("==search== searchText="+searchText);
        //1.调用service层的按searchText进行模糊查询
        List<EbProduct> productList = productService.selectByCondition(searchText);
        //2.将查询数来的数据绑定到model中
        model.addAttribute("productList",productList);
        //传递查询条件
        model.addAttribute("searchText",searchText);
        //3.返回视图：product-list.jsp
        return "product-list";

    }



}
